package com.feib.soeasy.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


/**
 * @title (#)PaymentItem.java<br>
 * @description 繳費明細<br>
 * @author Jimmy Liu<br>
 * @version 1.0.0 2010/11/25
 * @copyright Far Eastern International Bank Copyright (c) 2010<br>
 * @2010/11/7 create by Jimmy Liu<br>
 */
@Entity
@Table(name = "PAYMENT_ITEM")
public class PaymentItem extends AuditEntity {
    
    private static final long serialVersionUID = 6712340939193544576L;
    
    /**
     * PK in Table
     */
    private Long paymentItemPk;
    
    /**
     * 屬於哪一張繳費單
     */
    private Payment payment;
    
    /**
     * 繳費項目
     */
    private String itemName;
    
    /**
     * 金額
     */
    private Long amount;
    
    /**
     * 會計科目
     */
    private String accounts;
    
    /**
     * 可貸款欄位<br>
     * 豫章客製化
     */
    private Boolean loanable;
    
    /**
     * 客製化欄位
     */
    private String attribute1;
    
    /**
     * 客製化欄位
     */
    private String attribute2;
    
    /**
     * 客製化欄位
     */
    private String attribute3;
    
    /**
     * 客製化欄位
     */
    private String attribute4;
    
    /**
     * 客製化欄位
     */
    private String attribute5;
    
    /**
     * 客製化欄位
     */
    private String attribute6;

    
    /**
     * 客製化欄位
     */
    private String attribute7;

    
    /**
     * 客製化欄位
     */
    private String attribute8;

    
    /**
     * 客製化欄位
     */
    private String attribute9;

    
    /**
     * 客製化欄位
     */
    private String attribute10;

    
    /**
     * @return the paymentItemPk
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="PAYMENT_ITEM_PK", nullable=false)
    public Long getPaymentItemPk() {
        return paymentItemPk;
    }

    
    /**
     * @param paymentItemPk the paymentItemPk to set
     */
    public void setPaymentItemPk(Long paymentItemPk) {
        this.paymentItemPk = paymentItemPk;
    }

    
    /**
     * @return the payment
     */
    @ManyToOne
    @JoinColumn(name="PAYMENT_PK", nullable=false)
    public Payment getPayment() {
        return payment;
    }

    
    /**
     * @param payment the payment to set
     */
    public void setPayment(Payment payment) {
        this.payment = payment;
    }

    
    /**
     * @return the itemName
     */
    @Column(name="ITEM_NAME", nullable=false, length=255)
    public String getItemName() {
        return itemName;
    }

    
    /**
     * @param itemName the itemName to set
     */
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    
    /**
     * @return the amount
     */
    @Column(name="AMOUNT", nullable=false)
    public Long getAmount() {
        return amount;
    }

    
    /**
     * @param amount the amount to set
     */
    public void setAmount(Long amount) {
        this.amount = amount;
    }


    
    /**
     * @return the accounts
     */
    @Column(name="ACCOUNTS", length=100)
    public String getAccounts() {
        return accounts;
    }


    
    /**
     * @param accounts the accounts to set
     */
    public void setAccounts(String accounts) {
        this.accounts = accounts;
    }


    
    /**
     * @return the loanable
     */
    @Column(name="IS_LOANABLE")
    public Boolean getLoanable() {
        return loanable;
    }


    
    /**
     * @param loanable the loanable to set
     */
    public void setLoanable(Boolean loanable) {
        this.loanable = loanable;
    }


    
    /**
     * @return the attribute1
     */
    @Column(name="ATTRIBUTE1", length=255)
    public String getAttribute1() {
        return attribute1;
    }


    
    /**
     * @param attribute1 the attribute1 to set
     */
    public void setAttribute1(String attribute1) {
        this.attribute1 = attribute1;
    }


    
    /**
     * @return the attribute2
     */@Column(name="ATTRIBUTE2", length=255)
    public String getAttribute2() {
        return attribute2;
    }


    
    /**
     * @param attribute2 the attribute2 to set
     */
    public void setAttribute2(String attribute2) {
        this.attribute2 = attribute2;
    }


    
    /**
     * @return the attribute3
     */
    @Column(name="ATTRIBUTE3", length=255)
    public String getAttribute3() {
        return attribute3;
    }


    
    /**
     * @param attribute3 the attribute3 to set
     */
    public void setAttribute3(String attribute3) {
        this.attribute3 = attribute3;
    }


    
    /**
     * @return the attribute4
     */
    @Column(name="ATTRIBUTE4", length=255)
    public String getAttribute4() {
        return attribute4;
    }


    
    /**
     * @param attribute4 the attribute4 to set
     */
    public void setAttribute4(String attribute4) {
        this.attribute4 = attribute4;
    }


    
    /**
     * @return the attribute5
     */
    @Column(name="ATTRIBUTE5", length=255)
    public String getAttribute5() {
        return attribute5;
    }


    
    /**
     * @param attribute5 the attribute5 to set
     */
    public void setAttribute5(String attribute5) {
        this.attribute5 = attribute5;
    }


    
    /**
     * @return the attribute6
     */
    @Column(name="ATTRIBUTE6", length=255)
    public String getAttribute6() {
        return attribute6;
    }


    
    /**
     * @param attribute6 the attribute6 to set
     */
    public void setAttribute6(String attribute6) {
        this.attribute6 = attribute6;
    }


    
    /**
     * @return the attribute7
     */
    @Column(name="ATTRIBUTE7", length=255)
    public String getAttribute7() {
        return attribute7;
    }


    
    /**
     * @param attribute7 the attribute7 to set
     */
    public void setAttribute7(String attribute7) {
        this.attribute7 = attribute7;
    }


    
    /**
     * @return the attribute8
     */
    @Column(name="ATTRIBUTE8", length=255)
    public String getAttribute8() {
        return attribute8;
    }


    
    /**
     * @param attribute8 the attribute8 to set
     */
    public void setAttribute8(String attribute8) {
        this.attribute8 = attribute8;
    }


    
    /**
     * @return the attribute9
     */
    @Column(name="ATTRIBUTE9", length=255)
    public String getAttribute9() {
        return attribute9;
    }


    
    /**
     * @param attribute9 the attribute9 to set
     */
    public void setAttribute9(String attribute9) {
        this.attribute9 = attribute9;
    }


    
    /**
     * @return the attribute10
     */
    @Column(name="ATTRIBUTE10", length=255)
    public String getAttribute10() {
        return attribute10;
    }


    
    /**
     * @param attribute10 the attribute10 to set
     */
    public void setAttribute10(String attribute10) {
        this.attribute10 = attribute10;
    }

}
